3.2 Configuring the MyID Verification Service

The MyID Verification Service comprises the following web services:

3.2.1 Configuring the client certificate

This is applicable to the MobileAuthInternal service only.

In addition to setting up 2-way TLS, you must allow the allowed client certificates, as IIS does not allow the required fine-grained control. You must add the thumbprint of the client certificate to the appsettings.Production.json file in the web service folder.

This file is the override configuration file for the appsettings.json files for the service. If the file does not already exist, you must create it in the same folder as the appsettings.json file.

By default, this is:

C:\Program Files\Intercede\MyIDMobileAuthenticator\InternalWS\

If you are creating a new appsettings.Production.json file, include the following content:

Copy
{
  "MyID":  {
    "AllowedClientCertThumbprints":  [
      "Add accepted client cert hex thumbprint value(s) here"
    ]
  }
}

Replace the text with a list of certificate thumbprints that have been issued for client systems to use; for example:

Copy
"AllowedClientCertThumbprints": [
  "8dcd7b4f081143e1b9b0108bc88720ccd01fe163"
]

If you already have an existing appsettings.Production.json file, add the AllowedClientCertThumbprints entry to the MyID section.

You can find the certificate thumbprint in the Properties dialog of the certificate, on the Details tab, in the Thumbprint field.

Note: If you want to use an alternative authentication method in IIS instead of 2-way TLS, you must disable TLS in the configuration file. See section 3.2.7, Disabling 2-way TLS for the internal authentication service.

3.2.2 Configuring Firebase Cloud Messaging

This is applicable to the MobileAuthInternal service only.

The MobileAuthInternal web service uses Firebase Cloud Messaging (FCM) to send notification messages to MyID-provisioned mobile devices. To access FCM, the web service requires an authentication token; contact Intercede customer support to obtain your token file, quoting reference SUP-326.

Once you have received your Firebase token file:

  1. Copy the file to the web service folder.

    By default, this is:

    C:\Program Files\Intercede\MyIDMobileAuthenticator\InternalWS\

  2. Open a PowerShell window using the MyID web services user.

    This must be the same user as the one used for the MobileAuthInternalPool IIS application pool used by the MobileAuthInternal web service.

  3. Run the following PowerShell command:

    .\DPAPIEncryptFile.ps1 firebase.oath.json

    This creates a file called firebase.oath.json.enc and removes the original file.

    Note: If Firebase token file you have been provided has a different name, specify that name instead of firebase.oath.json. The PowerShell script creates an encrypted version of the file with .enc appended to its filename; for example, if your token file is mytoken.oath.json, the script creates an encrypted file called mytoken.oath.json.enc. You must then update the appsettings.Production.json file in the InternalWS folder to specify this filename; for example:

    Copy
    {
      "MyID":  {
        "FirebaseCredentialPath":  "mytoken.oath.json.enc",
        "AllowedClientCertThumbprints":  [
          "8dcd7b4f081143e1b9b0108bc88720ccd01fe163"
        ]
      }
    }

3.2.3 Configuring the database

Important: The installation procedure currently sets up the password for SQL Authentication incorrectly; if you are using SQL Authentication, you must follow the instructions in section 3.2.3.1, Encrypted database passwords below to log on as the MyID Authentication user and encrypt and store your database password for both the InternalWS and ExternalWS web services.

This is applicable to both the MobileAuthInternal service and the MobileAuthExternal web service.

The internal and external facing web services both require access to the MyID database and the specific authentication database.

You configure the databases when you install the web service; see section 3.1, Installing the verification service for details.

The database settings are stored in the appsettings.json file in each web service folder.

Important: The connection settings are updated when you run the installation program. If you have made any manual changes to the appsettings.json file, these are overwritten by the values you provide in the installer.

By default, these folders are:

C:\Program Files\Intercede\MyIDMobileAuthenticator\InternalWS\

and:

C:\Program Files\Intercede\MyIDMobileAuthenticator\ExternalWS\

A section at the bottom of the configuration file contains connection details; for example, for a database using Windows authentication:

Copy
"ConnectionStrings": {
  "MyIDDatabase": "Database=MyID; Server=localhost; Trusted_Connection = true;",
  "MobileAuthenticatorDatabase": "Database=MobileAuthenticator; Server=localhost; Trusted_Connection = true;"
},

By default, the connection strings are configured for a database that runs locally and uses a trusted connection. These entries must be configured to reference the server where each database is running, and the correct authentication parameters.

3.2.3.1 Encrypted database passwords

If you are using a user ID and password instead of a trusted connection, and you need to update the connection settings after installation, you must specify a password in the appsettings.json file.

You can use the Password Change Tool to update the password; see the Working with SQL accounts section in the Password Change Tool guide.

Alternatively, you can update the file manually; to do this, you must encrypt this password, and use the PasswordDPAPI parameter instead of the usual clear text Password parameter.

Log on to the server as the MyID Authentication user and use the supplied DPAPIEncrypt.ps1 PowerShell script to encrypt your password; this takes a single parameter, the password, and returns a Base64-encoded encrypted password. For example:

PS C:\Projects> .\DPAPIEncrypt.ps1 p455w0rd

AQAAANCMnd8BFdER[...]bq/L/gCw==

You can then use the Base64-encoded encrypted password in the PasswordDPAPI parameter; for example:

PasswordDPAPI=AQAAANCMnd8BFdER[...]bq/L/gCw==

3.2.4 Configuring the firewall for outgoing mobile notifications

The MobileAuthInternal web service must be able to communicate with Google’s Firebase Cloud Messaging service.

See the Google documentation for details of configuring the firewall:

firebase.google.com/docs/cloud-messaging/concept-options#messaging-ports-and-your-firewall

3.2.5 Configuring the firewall for incoming mobile notifications

Mobile devices using the MyID Authenticator app are required to receive push notifications are part of their normal process.

See the Apple website for details of configuring firewalls for devices to receive these notifications:

support.apple.com/en-gb/HT203609

3.2.6 Configuring the firewall for incoming MyID Authenticator app data

The MobileAuthExternal web service receives communications from the MyID Authenticator app running on mobile devices. This is used periodically to receive push notification tokens from the app, and every time the app is used to perform an authentication.

Any firewall configuration affecting the MobileAuthExternal web service must allow standard https traffic through to the port that the MobileAuthExternal web service has been configured to listen on; typically, this is port 443.

3.2.7 Disabling 2-way TLS for the internal authentication service

This is applicable to the MobileAuthInternal service only.

By default, the service is configured to require 2-way TLS, and to specify a client certificate thumbprint – see section 3.2.1, Configuring the client certificate.

If you want to configure your system to use an alternative authentication system in IIS, you must disable TLS in the MobileAuthInternal service configuration file.

To disable TLS, you must add the EnableClientCertAuthentication setting with a value of false to the appsettings.Production.json file in the web service folder; by default, this is:

C:\Program Files\Intercede\MyIDMobileAuthenticator\InternalWS\

Add the setting to the MyID section.

For example:

Copy
{
  "MyID":  {
    "EnableClientCertAuthentication":  "false",
  }
}

If this setting is missing, or set to any value other than false, then 2-way TLS is required.